Some additions and changes have been made to the software in this development package. The following list describes these changes along with some information on using the Thread Manager.
1) The big change: The Thread Manager is now available for both 680x0 and Power Macintosh platforms. This version contains the Thread Manager shared library which is what power applications call to use the Thread Manager. This does require re-compiling your code for Power Macintosh machines. Read the REAME for more information on how to compile your application using the new shared library. You'll find all you need in the folder named "Compiler Stuff". Also included is an updated version of the documentation that includes all information about the Power Thread Manager.
2) There have been some bug fixes.
--> Fixed a bug with VM and Thread Manager interaction. The Thread Manager globals would sometimes be paged out when VM would get into a thrashing state.
--> Fixed a bug where the Thread Manager was disposing the running thread upon exiting the application. This had very bad effects on the application that was quiting.
2) The source level debugger, VoodooMonkey has been updated to version d23.
3) New examples. The same old 680x0 examples are included in this package as well as some simple Power Thread Manager examples.
4) There is a bug in the Traffic Simulation sample application with regard to custom context switchers. The custom context switchers in the application assume that register A5 points to the application globals, when in fact, it is not guaranteed to. The author of this application has been publicly chastised for not following the Thread Manager documentation about custom context switchers and A5. The fix to the code is left as an exercise for the reader.
5) General Thread Manager information:
-- The caller of DisposeThread can decide of the thread is reclaimed in the thread pool. If the thread calling DisposeThread is a preemptive thread, the disposed of thread is ALWAYS reclaimed in the thread pool to prevent Memory Manager calls from being called at preemptive thread time. When a thread RTSes, it will not be reclaimed into the thread pool unless it is a preemptive thread (for the above reason).
-- Thread termination routines can rely on register A5 being valid when they are called. Thread termination routines can make all the thread calls a thread can make. The thread result is set before the thread termination routine is run.
-- For those of you who use SIOW applications, you need to preload/lock all your code resources for the application to run correctly. No details on why this overkill is needed, but if you do this, it works.
-- A ThreadTaskRef is unique for each application launched and does not change during application execution.
-- Allocation from a thread pool works as 'best fit' for the new thread stack size unless the new thread creation option, kExactMatchThread, is used.
If you have any bug reports or comments, please don’t hesitate to link or write. You can contact us through the following:
AppleLink: ERIC3, BPOST
or place your comments in the Developer Talk bulletin boards on AppleLink, the internet, Compuserve, AOL, or some other public discussion area.